home *** CD-ROM | disk | FTP | other *** search
- /* $Id: Parser.c,v 2.9 1992/08/07 15:28:42 grosch rel $ */
-
- #define bool char
- #define true 1
- #define false 0
-
- #include "PhoneLogParser.h"
- #include "Errors.h"
- #include "Memory.h"
- #include "DynArray.h"
- #include "Sets.h"
- #include <string.h>
- #ifndef BCOPY
- #include <memory.h>
- #endif
-
-
- #ifdef lex_interface
- #define PhoneLogScanner_GetToken yylex
- extern int yylex(void);
- #ifndef AttributeDef
- #include "Positions.h"
- typedef struct {tPosition Position;} PhoneLogScanner_tScanAttribute;
- static PhoneLogScanner_tScanAttribute PhoneLogScanner_Attribute = {{0,0}};
- #endif
- #ifndef ErrorAttributeDef
- #define PhoneLogScanner_ErrorAttribute(Token,RepairAttribute)
- #endif
- #ifndef yyGetAttribute
- #define yyGetAttribute(yyAttrStackPtr,Attribute) *yyAttrStackPtr = yylval
- #endif
- #else
- #include "PhoneLogScanner.h"
- #ifndef yyGetAttribute
- #define yyGetAttribute(yyAttrStackPtr,Attribute) (yyAttrStackPtr)->Scan = Attribute
- #endif
- #endif
-
-
- /* line 10 "t:lalr.tmp" */
- /* line 10 "PhoneLogParser.lalr" */
- /*GLOBAL*/
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "PhoneLog.h"
- #include "PhoneLogParserInterface.h"
-
- typedef struct {
- PhoneLogScanner_tScanAttribute Scan;
- } tParsAttribute;
-
-
- struct PhoneLogMarker Marker;
- struct PhoneLogEntry Entry;
-
- static unsigned short Day,Month,Hour,Min,Sec;
- static int Year;
- /*GLOBAL*/
-
-
- #if defined lex_interface & ! defined yylvalDef
- tParsAttribute yylval;
- #endif
- #ifndef yyInitStackSize
- #define yyInitStackSize 100
- #endif
- #define yyNoState 0
-
-
- # define yyFirstTerminal 0
- # define yyLastTerminal 81
- # define yyTableMax 168
- # define yyNTableMax 130
- # define yyFirstReadState 1
- # define yyLastReadState 72
- # define yyFirstReadTermState 73
- # define yyLastReadTermState 90
- # define yyLastReadNontermState 105
- # define yyFirstReduceState 106
- # define yyLastReduceState 162
- # define yyStartState 1
- # define yyStopState 106
-
-
- #define yyFirstFinalState yyFirstReadTermState
-
-
- typedef unsigned short yyStateRange;
- typedef unsigned short yySymbolRange;
- typedef struct {yyStateRange Check, Next;} yyTCombType;
-
-
- char *PhoneLogParser_TokenName[yyLastTerminal+1] = {
- "_EndOfFile",
- "digits",
- "text",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- "=",
- ">",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- "<PHONELOG",
- "</PHONELOG>",
- "<ENTRY>",
- "</ENTRY>",
- "<HOST>",
- "</HOST>",
- "<NUMBER>",
- "</NUMBER>",
- "<HOSTNAME>",
- "</HOSTNAME>",
- "<START>",
- "</START>",
- "<END>",
- "</END>",
- "<DATE>",
- "</DATE>",
- "<TIME>",
- "</TIME>",
- "<PERIOD>",
- "</PERIOD>",
- "<MARK>",
- "</MARK>",
- "<PROGRAM",
- "</PROGRAM>",
- "<MARKNAME>",
- "</MARKNAME>",
- "<REASON>",
- "</REASON>",
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- "version",
- "revision",
- };
- static yyTCombType yyTComb[yyTableMax+1] = {
- {10, 110},
- {4, 5},
- {8, 73},
- {11, 108},
- {16, 17},
- {20, 75},
- {22, 23},
- {26, 27},
- {29, 30},
- {32, 33},
- {3, 4},
- {2, 114},
- {5, 119},
- {6, 117},
- {7, 8},
- {9, 10},
- {14, 147},
- {15, 16},
- {17, 152},
- {18, 150},
- {1, 2},
- {10, 110},
- {10, 110},
- {19, 20},
- {11, 74},
- {11, 12},
- {12, 125},
- {13, 123},
- {21, 22},
- {24, 25},
- {25, 26},
- {27, 77},
- {28, 129},
- {30, 78},
- {31, 127},
- {28, 29},
- {34, 80},
- {35, 36},
- {36, 137},
- {37, 38},
- {10, 110},
- {38, 39},
- {39, 81},
- {11, 56},
- {12, 125},
- {13, 14},
- {23, 76},
- {33, 79},
- {40, 136},
- {42, 43},
- {43, 82},
- {44, 135},
- {45, 83},
- {28, 129},
- {46, 47},
- {31, 32},
- {47, 142},
- {48, 140},
- {47, 142},
- {49, 42},
- {50, 139},
- {51, 84},
- {52, 121},
- {53, 54},
- {54, 85},
- {55, 86},
- {56, 154},
- {57, 58},
- {58, 156},
- {59, 60},
- {60, 61},
- {61, 161},
- {62, 159},
- {63, 64},
- {64, 87},
- {65, 66},
- {66, 67},
- {52, 53},
- {67, 88},
- {68, 69},
- {2, 3},
- {69, 70},
- {5, 119},
- {6, 7},
- {70, 89},
- {14, 15},
- {71, 90},
- {72, 106},
- {17, 152},
- {18, 19},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {58, 59},
- {0, 0},
- {0, 0},
- {0, 0},
- {61, 161},
- {62, 63},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- {0, 0},
- };
- static unsigned short yyNComb[yyNTableMax - yyLastTerminal] = {
- 9,
- 11,
- 101,
- 72,
- 102,
- 103,
- 104,
- 105,
- 6,
- 91,
- 13,
- 24,
- 35,
- 46,
- 52,
- 55,
- 97,
- 98,
- 28,
- 31,
- 34,
- 94,
- 95,
- 37,
- 40,
- 41,
- 44,
- 45,
- 48,
- 50,
- 96,
- 21,
- 93,
- 18,
- 92,
- 49,
- 51,
- 57,
- 68,
- 65,
- 100,
- 62,
- 99,
- 71,
- 0,
- 0,
- 0,
- 0,
- 0,
- };
- static yyTCombType *yyTBasePtr[yyLastReadState+1] = {
- & yyTComb [0],
- & yyTComb [0],
- & yyTComb [0],
- & yyTComb [0],
- & yyTComb [0],
- & yyTComb [1],
- & yyTComb [2],
- & yyTComb [4],
- & yyTComb [1],
- & yyTComb [4],
- & yyTComb [0],
- & yyTComb [3],
- & yyTComb [2],
- & yyTComb [3],
- & yyTComb [5],
- & yyTComb [7],
- & yyTComb [3],
- & yyTComb [7],
- & yyTComb [8],
- & yyTComb [13],
- & yyTComb [4],
- & yyTComb [17],
- & yyTComb [4],
- & yyTComb [3],
- & yyTComb [5],
- & yyTComb [4],
- & yyTComb [5],
- & yyTComb [4],
- & yyTComb [7],
- & yyTComb [6],
- & yyTComb [4],
- & yyTComb [9],
- & yyTComb [7],
- & yyTComb [0],
- & yyTComb [11],
- & yyTComb [7],
- & yyTComb [4],
- & yyTComb [5],
- & yyTComb [39],
- & yyTComb [7],
- & yyTComb [12],
- & yyTComb [0],
- & yyTComb [47],
- & yyTComb [13],
- & yyTComb [20],
- & yyTComb [21],
- & yyTComb [22],
- & yyTComb [22],
- & yyTComb [21],
- & yyTComb [23],
- & yyTComb [27],
- & yyTComb [28],
- & yyTComb [39],
- & yyTComb [61],
- & yyTComb [25],
- & yyTComb [42],
- & yyTComb [24],
- & yyTComb [25],
- & yyTComb [57],
- & yyTComb [59],
- & yyTComb [69],
- & yyTComb [60],
- & yyTComb [61],
- & yyTComb [63],
- & yyTComb [73],
- & yyTComb [64],
- & yyTComb [74],
- & yyTComb [35],
- & yyTComb [35],
- & yyTComb [79],
- & yyTComb [39],
- & yyTComb [45],
- & yyTComb [87],
- };
- static unsigned short* yyNBasePtr[yyLastReadState+1] = {
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-76],
- & yyNComb [-79],
- & yyNComb [-76],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-80],
- & yyNComb [-80],
- & yyNComb [-81],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-81],
- & yyNComb [-81],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-76],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- & yyNComb [-82],
- };
- static unsigned short yyDefault[yyLastReadState+1] = {
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 49,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 37,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- };
- static unsigned char yyLength[yyLastReduceState - yyFirstReduceState+1] = {
- 2,
- 5,
- 0,
- 1,
- 0,
- 2,
- 1,
- 1,
- 0,
- 1,
- 5,
- 0,
- 3,
- 0,
- 8,
- 0,
- 1,
- 0,
- 1,
- 0,
- 5,
- 0,
- 1,
- 0,
- 1,
- 3,
- 3,
- 3,
- 7,
- 0,
- 0,
- 0,
- 6,
- 0,
- 0,
- 1,
- 0,
- 3,
- 3,
- 3,
- 5,
- 0,
- 1,
- 5,
- 0,
- 3,
- 0,
- 5,
- 0,
- 5,
- 0,
- 1,
- 5,
- 0,
- 3,
- 0,
- 3,
- };
- static yySymbolRange yyLeftHandSide[yyLastReduceState - yyFirstReduceState+1] = {
- 124,
- 85,
- 84,
- 84,
- 83,
- 83,
- 86,
- 86,
- 82,
- 82,
- 89,
- 91,
- 91,
- 90,
- 87,
- 97,
- 97,
- 93,
- 93,
- 92,
- 94,
- 102,
- 102,
- 101,
- 101,
- 100,
- 104,
- 103,
- 95,
- 109,
- 107,
- 105,
- 96,
- 112,
- 111,
- 111,
- 110,
- 106,
- 108,
- 98,
- 99,
- 113,
- 113,
- 114,
- 116,
- 116,
- 115,
- 88,
- 117,
- 118,
- 120,
- 120,
- 121,
- 123,
- 123,
- 122,
- 119,
- };
- static yySymbolRange yyContinuation[yyLastReadState+1] = {
- 0,
- 20,
- 11,
- 10,
- 1,
- 11,
- 11,
- 10,
- 1,
- 11,
- 0,
- 0,
- 24,
- 24,
- 11,
- 10,
- 1,
- 11,
- 11,
- 10,
- 1,
- 11,
- 2,
- 43,
- 24,
- 26,
- 2,
- 27,
- 25,
- 2,
- 29,
- 25,
- 2,
- 47,
- 25,
- 30,
- 34,
- 34,
- 2,
- 35,
- 36,
- 36,
- 2,
- 37,
- 31,
- 31,
- 32,
- 34,
- 36,
- 36,
- 33,
- 33,
- 23,
- 2,
- 39,
- 23,
- 42,
- 42,
- 11,
- 10,
- 1,
- 11,
- 11,
- 10,
- 1,
- 11,
- 2,
- 43,
- 44,
- 2,
- 45,
- 41,
- 0,
- };
- static unsigned short yyFinalToProd[yyLastReadNontermState - yyFirstReadTermState+1] = {
- 118,
- 109,
- 151,
- 146,
- 131,
- 132,
- 133,
- 126,
- 143,
- 144,
- 134,
- 138,
- 145,
- 120,
- 160,
- 155,
- 162,
- 153,
- 116,
- 149,
- 148,
- 128,
- 130,
- 141,
- 122,
- 124,
- 158,
- 157,
- 107,
- 111,
- 112,
- 113,
- 115,
- };
-
-
- static void yyErrorRecovery(yySymbolRange * yyTerminal, yyStateRange * yyStateStack, unsigned long yyStackSize, short yyStackPtr);
- static void yyComputeContinuation(yyStateRange * yyStack, unsigned long yyStackSize, short yyStackPtr, tSet * yyContinueSet);
- static bool yyIsContinuation(yySymbolRange yyTerminal, yyStateRange * yyStateStack, unsigned long yyStackSize, short yyStackPtr);
- static void yyComputeRestartPoints(yyStateRange * yyStateStack, unsigned long yyStackSize, short yyStackPtr, tSet * yyRestartSet);
- static yyStateRange yyNext(yyStateRange yyState, yySymbolRange yySymbol);
- static void BeginPhoneLogParser(void);
-
-
- int PhoneLogParser(void)
- {
- register yyStateRange yyState;
- register long yyTerminal;
- register yyStateRange *yyStateStackPtr;
- register tParsAttribute *yyAttrStackPtr;
- register bool yyIsRepairing;
- unsigned long yyStateStackSize= yyInitStackSize;
- unsigned long yyAttrStackSize = yyInitStackSize;
- yyStateRange *yyStateStack;
- tParsAttribute* yyAttributeStack;
- tParsAttribute yySynAttribute; /* synthesized attribute */ /* ??? */
- register yyStateRange *yyEndOfStack;
- int yyErrorCount = 0;
-
- /* line 25 "t:lalr.tmp" */
- /* line 25 "PhoneLogParser.lalr" */
- /*LOCAL*/
- char Word[256];
- /*LOCAL*/
-
- BeginPhoneLogParser();
- yyState = yyStartState;
- yyTerminal = PhoneLogScanner_GetToken();
- MakeArray((char **)&yyStateStack,&yyStateStackSize,sizeof(yyStateRange));
- MakeArray((char **)&yyAttributeStack,&yyAttrStackSize,sizeof(tParsAttribute));
- yyEndOfStack = &yyStateStack[yyStateStackSize];
- yyStateStackPtr = yyStateStack;
- yyAttrStackPtr = yyAttributeStack;
- yyIsRepairing = false;
- ParseLoop:
- for (;;)
- {
- if (yyStateStackPtr >= yyEndOfStack)
- {
- int yyyStateStackPtr = yyStateStackPtr - yyStateStack;
- int yyyAttrStackPtr = yyAttrStackPtr - yyAttributeStack;
- ExtendArray ((char **)&yyStateStack,&yyStateStackSize,sizeof (yyStateRange));
- ExtendArray ((char **)&yyAttributeStack,&yyAttrStackSize,sizeof (tParsAttribute));
- yyStateStackPtr = yyStateStack + yyyStateStackPtr;
- yyAttrStackPtr = yyAttributeStack + yyyAttrStackPtr;
- yyEndOfStack = &yyStateStack[yyStateStackSize];
- }
- *yyStateStackPtr = yyState;
- TermTrans:
- for (;;)
- {/* SPEC State = Next (State, Terminal); terminal transition */
- register short *yyTCombPtr;
-
- yyTCombPtr = (short *)(yyTBasePtr[yyState] + yyTerminal);
- if (*yyTCombPtr++ == yyState)
- {
- yyState = *yyTCombPtr;
- break;
- }
- if ((yyState = yyDefault[yyState]) != yyNoState)
- goto TermTrans;
- /* syntax error */
- if (!yyIsRepairing)
- {/* report and recover */
- yySymbolRange yyyTerminal = yyTerminal;
- yyErrorCount++;
- yyErrorRecovery(&yyyTerminal,yyStateStack,yyStateStackSize,(short)(yyStateStackPtr-yyStateStack));
- yyTerminal = yyyTerminal;
- yyIsRepairing = true;
- }
- yyState = *yyStateStackPtr;
- for (;;)
- {
- if (yyNext(yyState,(yySymbolRange)yyTerminal) == yyNoState)
- {/* repair */
- yySymbolRange yyRepairToken;
- PhoneLogScanner_tScanAttribute yyRepairAttribute;
- yyRepairToken = yyContinuation[yyState];
- yyState = yyNext(yyState, yyRepairToken);
- if (yyState <= yyLastReadTermState)
- {/* read or read terminal reduce ? */
- PhoneLogScanner_ErrorAttribute((int)yyRepairToken,&yyRepairAttribute);
- ErrorMessageI(xxTokenInserted,xxRepair,PhoneLogScanner_Attribute.Position,xxString,PhoneLogParser_TokenName[yyRepairToken]);
- if (yyState >= yyFirstFinalState)
- {/* avoid second push */
- yyState = yyFinalToProd[yyState - yyFirstReadTermState];
- }
- yyGetAttribute(yyAttrStackPtr++,yyRepairAttribute);
- * ++yyStateStackPtr = yyState;
- }
- if (yyState >= yyFirstFinalState)
- goto Final; /* final state ? */
- }
- else
- {
- yyState = yyNext(yyState,(yySymbolRange)yyTerminal);
- goto Final;
- }
- }
- }
- Final:
- if (yyState >= yyFirstFinalState)
- {/* final state ? */
- if (yyState <= yyLastReadTermState)
- {/* read terminal reduce ? */
- yyStateStackPtr++;
- yyGetAttribute(yyAttrStackPtr++,PhoneLogScanner_Attribute);
- yyTerminal = PhoneLogScanner_GetToken();
- yyIsRepairing = false;
- }
- for (;;)
- {/* left-hand side */
- #define yyNonterminal yyState
-
- switch (yyState) {
- case 106: /* _0000_ : PHONELOG _EndOfFile .*/
- ReleaseArray ((char * *) & yyStateStack, & yyStateStackSize, sizeof (yyStateRange));
- ReleaseArray ((char * *) & yyAttributeStack, & yyAttrStackSize, sizeof (tParsAttribute));
- return yyErrorCount;
-
- case 107:
- case 101: /* PHONELOG : "<PHONELOG" PHONELOG_1 ">" PHONELOG_2 PHONELOG_3 .*/
- yyStateStackPtr -=5; yyAttrStackPtr -=5; yyNonterminal = 85; {
-
- } break;
- case 108: /* PHONELOG_3 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 84; {
-
- } break;
- case 109:
- case 74: /* PHONELOG_3 : "</PHONELOG>" .*/
- yyStateStackPtr -=1; yyAttrStackPtr -=1; yyNonterminal = 84; {
-
- } break;
- case 110: /* PHONELOG_2 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 83; {
-
- } break;
- case 111:
- case 102: /* PHONELOG_2 : PHONELOG_2 PHONELOG_4 .*/
- yyStateStackPtr -=2; yyAttrStackPtr -=2; yyNonterminal = 83; {
-
- } break;
- case 112:
- case 103: /* PHONELOG_4 : ENTRY .*/
- yyStateStackPtr -=1; yyAttrStackPtr -=1; yyNonterminal = 86; {
-
- } break;
- case 113:
- case 104: /* PHONELOG_4 : MARK .*/
- yyStateStackPtr -=1; yyAttrStackPtr -=1; yyNonterminal = 86; {
-
- } break;
- case 114: /* PHONELOG_1 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 82; {
-
- } break;
- case 115:
- case 105: /* PHONELOG_1 : PHONELOGATTR .*/
- yyStateStackPtr -=1; yyAttrStackPtr -=1; yyNonterminal = 82; {
-
- } break;
- case 116:
- case 91: /* PHONELOGATTR : "version" "=" digits PHONELOGATTR_1 PHONELOGATTR_2 .*/
- yyStateStackPtr -=5; yyAttrStackPtr -=5; yyNonterminal = 89; {
-
- } break;
- case 117: /* PHONELOGATTR_2 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 91; {
-
- } break;
- case 118:
- case 73: /* PHONELOGATTR_2 : "revision" "=" digits .*/
- yyStateStackPtr -=3; yyAttrStackPtr -=3; yyNonterminal = 91; {
- /* line 89 "t:lalr.tmp" */
- /* line 100 "PhoneLogParser.lalr" */
-
- #ifdef DEBUG
- printf("PhoneLog revision: %d\n",yyAttrStackPtr [3-1].Scan.number);
- #endif
- if ((yyAttrStackPtr [-1-1].Scan.number == 1) && (yyAttrStackPtr [3-1].Scan.number != 1))
- {
- ErrorMessage(xxSyntaxError,xxFatal,yyAttrStackPtr [3-1].Scan.Position);
- }
-
- } break;
- case 119: /* PHONELOGATTR_1 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 90; {
- /* line 101 "t:lalr.tmp" */
- /* line 89 "PhoneLogParser.lalr" */
-
- #ifdef DEBUG
- printf("PhoneLog version : %d\n",yyAttrStackPtr [0-1].Scan.number);
- #endif
- if (yyAttrStackPtr [0-1].Scan.number != 1)
- {
- ErrorMessage(xxSyntaxError,xxFatal,yyAttrStackPtr [0-1].Scan.Position);
- }
-
- } break;
- case 120:
- case 86: /* ENTRY : "<ENTRY>" ENTRY_1 ENTRY_2 HOST START END ENTRY_3 "</ENTRY>" .*/
- yyStateStackPtr -=8; yyAttrStackPtr -=8; yyNonterminal = 87; {
- /* line 111 "t:lalr.tmp" */
- /* line 139 "PhoneLogParser.lalr" */
-
- InsertPhoneLogEntry(&Entry);
-
- } break;
- case 121: /* ENTRY_3 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 97; {
-
- } break;
- case 122:
- case 97: /* ENTRY_3 : PERIOD .*/
- yyStateStackPtr -=1; yyAttrStackPtr -=1; yyNonterminal = 97; {
-
- } break;
- case 123: /* ENTRY_2 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 93; {
-
- } break;
- case 124:
- case 98: /* ENTRY_2 : PROGRAM1 .*/
- yyStateStackPtr -=1; yyAttrStackPtr -=1; yyNonterminal = 93; {
-
- } break;
- case 125: /* ENTRY_1 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 92; {
- /* line 145 "t:lalr.tmp" */
- /* line 134 "PhoneLogParser.lalr" */
-
- Entry.Number[0] = '\0';
- Entry.Name[0] = '\0';
- Entry.Reason[0] = '\0';
- Entry.ProgramName[0] = '\0';
- Entry.ProgramVersion = 0;
- Entry.ProgramRevision = 0;
- Entry.StartDay = 0;
- Entry.StartMonth = 0;
- Entry.StartYear = 0;
- Entry.StartHour = 0;
- Entry.StartMin = 0;
- Entry.StartSec = 0;
- Entry.EndDay = 0;
- Entry.EndMonth = 0;
- Entry.EndYear = 0;
- Entry.EndHour = 0;
- Entry.EndMin = 0;
- Entry.EndSec = 0;
- Entry.Hours = 0;
- Entry.Mins = 0;
- Entry.Secs = 0;
- #ifdef DEBUG
- printf("\nENTRY\n");
- #endif
-
- } break;
- case 126:
- case 80: /* HOST : "<HOST>" NUMBER HOST_1 HOST_2 "</HOST>" .*/
- yyStateStackPtr -=5; yyAttrStackPtr -=5; yyNonterminal = 94; {
-
- } break;
- case 127: /* HOST_2 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 102; {
-
- } break;
- case 128:
- case 94: /* HOST_2 : REASON .*/
- yyStateStackPtr -=1; yyAttrStackPtr -=1; yyNonterminal = 102; {
-
- } break;
- case 129: /* HOST_1 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 101; {
-
- } break;
- case 130:
- case 95: /* HOST_1 : HOSTNAME .*/
- yyStateStackPtr -=1; yyAttrStackPtr -=1; yyNonterminal = 101; {
-
- } break;
- case 131:
- case 77: /* NUMBER : "<NUMBER>" text "</NUMBER>" .*/
- yyStateStackPtr -=3; yyAttrStackPtr -=3; yyNonterminal = 100; {
- /* line 170 "t:lalr.tmp" */
- /* line 160 "PhoneLogParser.lalr" */
-
- StGetString(yyAttrStackPtr [2-1].Scan.lexstring,Word);
- if (strlen(Word) < 31)
- {
- strcpy(Entry.Number,Word);
- }
- else
- {
- strncpy(Entry.Number,Word,30);
- Entry.Number[30] = '\0';
- }
- #ifdef DEBUG
- printf(" NUMBER : %s\n",Word);
- #endif
-
- } break;
- case 132:
- case 78: /* HOSTNAME : "<HOSTNAME>" text "</HOSTNAME>" .*/
- yyStateStackPtr -=3; yyAttrStackPtr -=3; yyNonterminal = 104; {
- /* line 189 "t:lalr.tmp" */
- /* line 178 "PhoneLogParser.lalr" */
-
- StGetString(yyAttrStackPtr [2-1].Scan.lexstring,Word);
- if (strlen(Word) < 81)
- {
- strcpy(Entry.Name,Word);
- }
- else
- {
- strncpy(Entry.Name,Word,80);
- Entry.Name[80] = '\0';
- }
- #ifdef DEBUG
- printf(" HOSTNAME: %s\n",Word);
- #endif
-
- } break;
- case 133:
- case 79: /* REASON : "<REASON>" text "</REASON>" .*/
- yyStateStackPtr -=3; yyAttrStackPtr -=3; yyNonterminal = 103; {
- /* line 208 "t:lalr.tmp" */
- /* line 196 "PhoneLogParser.lalr" */
-
- StGetString(yyAttrStackPtr [2-1].Scan.lexstring,Word);
- if (strlen(Word) < 81)
- {
- strcpy(Entry.Reason,Word);
- }
- else
- {
- strncpy(Entry.Reason,Word,80);
- Entry.Reason[0] = '\0';
- }
- #ifdef DEBUG
- printf(" REASON: %s\n",Word);
- #endif
-
- } break;
- case 134:
- case 83: /* START : "<START>" START_1 DATE START_2 TIME START_3 "</START>" .*/
- yyStateStackPtr -=7; yyAttrStackPtr -=7; yyNonterminal = 95; {
-
- } break;
- case 135: /* START_3 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 109; {
- /* line 215 "t:lalr.tmp" */
- /* line 215 "PhoneLogParser.lalr" */
-
- Entry.StartHour = Hour;
- Entry.StartMin = Min;
- Entry.StartSec = Sec;
-
- } break;
- case 136: /* START_2 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 107; {
- /* line 223 "t:lalr.tmp" */
- /* line 208 "PhoneLogParser.lalr" */
-
- Entry.StartDay = Day;
- Entry.StartMonth = Month;
- Entry.StartYear = Year;
-
- } break;
- case 137: /* START_1 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 105; {
- /* line 234 "t:lalr.tmp" */
- /* line 204 "PhoneLogParser.lalr" */
-
- #ifdef DEBUG
- printf(" START\n");
- #endif
-
- } break;
- case 138:
- case 84: /* END : "<END>" END_1 END_2 TIME END_3 "</END>" .*/
- yyStateStackPtr -=6; yyAttrStackPtr -=6; yyNonterminal = 96; {
-
- } break;
- case 139: /* END_3 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 112; {
- /* line 241 "t:lalr.tmp" */
- /* line 241 "PhoneLogParser.lalr" */
-
- Entry.EndHour = Hour;
- Entry.EndMin = Min;
- Entry.EndSec = Sec;
-
- } break;
- case 140: /* END_2 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 111; {
-
- } break;
- case 141:
- case 96: /* END_2 : DATE .*/
- yyStateStackPtr -=1; yyAttrStackPtr -=1; yyNonterminal = 111; {
- /* line 250 "t:lalr.tmp" */
- /* line 234 "PhoneLogParser.lalr" */
-
- Entry.EndDay = Day;
- Entry.EndMonth = Month;
- Entry.EndYear = Year;
-
- } break;
- case 142: /* END_1 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 110; {
- /* line 264 "t:lalr.tmp" */
- /* line 229 "PhoneLogParser.lalr" */
-
- Entry.EndDay = Entry.StartDay;
- Entry.EndMonth = Entry.StartMonth;
- Entry.EndYear = Entry.StartYear;
- #ifdef DEBUG
- printf(" END\n");
- #endif
-
- } break;
- case 143:
- case 81: /* DATE : "<DATE>" text "</DATE>" .*/
- yyStateStackPtr -=3; yyAttrStackPtr -=3; yyNonterminal = 106; {
- /* line 275 "t:lalr.tmp" */
- /* line 254 "PhoneLogParser.lalr" */
-
- StGetString(yyAttrStackPtr [2-1].Scan.lexstring,Word);
- sscanf(Word,"%d-%hu-%hu",&Year,&Month,&Day);
- #ifdef DEBUG
- printf(" DATE : %hu.%hu.%d\n",Day,Month,Year);
- #endif
-
- } break;
- case 144:
- case 82: /* TIME : "<TIME>" text "</TIME>" .*/
- yyStateStackPtr -=3; yyAttrStackPtr -=3; yyNonterminal = 108; {
- /* line 286 "t:lalr.tmp" */
- /* line 264 "PhoneLogParser.lalr" */
-
- StGetString(yyAttrStackPtr [2-1].Scan.lexstring,Word);
- sscanf(Word,"%hu:%hu:%hu",&Hour,&Min,&Sec);
- #ifdef DEBUG
- printf(" TIME : %hu:%hu:%hu\n",Hour,Min,Sec);
- #endif
-
- } break;
- case 145:
- case 85: /* PERIOD : "<PERIOD>" text "</PERIOD>" .*/
- yyStateStackPtr -=3; yyAttrStackPtr -=3; yyNonterminal = 98; {
- /* line 317 "t:lalr.tmp" */
- /* line 294 "PhoneLogParser.lalr" */
-
- /*
- char *h,*m,*s;
-
- Entry.Hours = 0;
- Entry.Mins = 0;
- Entry.Secs = 0;
- StGetString(yyAttrStackPtr [2-1].Scan.lexstring,Word);
- h = strchr(Word,(int)'H');
- m = strchr(Word,(int)'M');
- s = strchr(Word,(int)'S');
- if (h != NULL)
- {
- Entry.Hours = atoi(Word);
- }
- if (m != NULL)
- {
- Entry.Mins = atoi(++h);
- }
- if (s != NULL)
- {
- Entry.Secs = atoi(++m);
- }
- #ifdef DEBUG
- printf(" PERIOD : %huH%huM%huS\n",Entry.Hours,Entry.Mins,Entry.Secs);
- #endif
- */
-
- } break;
- case 146:
- case 76: /* PROGRAM1 : "<PROGRAM" PROGRAM1_1 ">" text "</PROGRAM>" .*/
- yyStateStackPtr -=5; yyAttrStackPtr -=5; yyNonterminal = 99; {
- /* line 337 "t:lalr.tmp" */
- /* line 314 "PhoneLogParser.lalr" */
-
- StGetString(yyAttrStackPtr [4-1].Scan.lexstring,Word);
- if (strlen(Word) < 32)
- {
- strcpy(Entry.ProgramName,Word);
- }
- else
- {
- strncpy(Entry.ProgramName,Word,31);
- Entry.ProgramName[31] = '\0';
- }
- #ifdef DEBUG
- printf(" PROGRAM : %s\n",Word);
- #endif
-
- } break;
- case 147: /* PROGRAM1_1 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 113; {
-
- } break;
- case 148:
- case 93: /* PROGRAM1_1 : PROGRAM1ATTR .*/
- yyStateStackPtr -=1; yyAttrStackPtr -=1; yyNonterminal = 113; {
-
- } break;
- case 149:
- case 92: /* PROGRAM1ATTR : "version" "=" digits PROGRAM1ATTR_1 PROGRAM1ATTR_2 .*/
- yyStateStackPtr -=5; yyAttrStackPtr -=5; yyNonterminal = 114; {
-
- } break;
- case 150: /* PROGRAM1ATTR_2 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 116; {
-
- } break;
- case 151:
- case 75: /* PROGRAM1ATTR_2 : "revision" "=" digits .*/
- yyStateStackPtr -=3; yyAttrStackPtr -=3; yyNonterminal = 116; {
- /* line 351 "t:lalr.tmp" */
- /* line 331 "PhoneLogParser.lalr" */
-
- Entry.ProgramRevision = (unsigned short)yyAttrStackPtr [3-1].Scan.number;
- #ifdef DEBUG
- printf(" PROGRAM revision: %d\n",yyAttrStackPtr [3-1].Scan.number);
- #endif
-
- } break;
- case 152: /* PROGRAM1ATTR_1 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 115; {
- /* line 360 "t:lalr.tmp" */
- /* line 323 "PhoneLogParser.lalr" */
-
- Entry.ProgramVersion = (unsigned short)yyAttrStackPtr [0-1].Scan.number;
- #ifdef DEBUG
- printf(" PROGRAM version : %d\n",yyAttrStackPtr [0-1].Scan.number);
- #endif
-
- } break;
- case 153:
- case 90: /* MARK : "<MARK>" MARK_1 PROGRAM2 MARKNAME "</MARK>" .*/
- yyStateStackPtr -=5; yyAttrStackPtr -=5; yyNonterminal = 88; {
- /* line 366 "t:lalr.tmp" */
- /* line 350 "PhoneLogParser.lalr" */
-
- InsertPhoneLogMark(&Marker);
-
- } break;
- case 154: /* MARK_1 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 117; {
- /* line 379 "t:lalr.tmp" */
- /* line 345 "PhoneLogParser.lalr" */
-
- Marker.ProgramName[0] = '\0';
- Marker.ProgramVersion = 0;
- Marker.ProgramRevision = 0;
- Marker.MarkName[0] = '\0';
- #ifdef DEBUG
- printf("\nMARK\n");
- #endif
-
- } break;
- case 155:
- case 88: /* PROGRAM2 : "<PROGRAM" PROGRAM2_1 ">" text "</PROGRAM>" .*/
- yyStateStackPtr -=5; yyAttrStackPtr -=5; yyNonterminal = 118; {
- /* line 398 "t:lalr.tmp" */
- /* line 368 "PhoneLogParser.lalr" */
-
- StGetString(yyAttrStackPtr [4-1].Scan.lexstring,Word);
- if (strlen(Word) < 32)
- {
- strcpy(Marker.ProgramName,Word);
- }
- else
- {
- strncpy(Marker.ProgramName,Word,31);
- Marker.ProgramName[31] = '\0';
- }
- #ifdef DEBUG
- printf(" PROGRAM : %s\n",Word);
- #endif
-
- } break;
- case 156: /* PROGRAM2_1 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 120; {
-
- } break;
- case 157:
- case 100: /* PROGRAM2_1 : PROGRAM2ATTR .*/
- yyStateStackPtr -=1; yyAttrStackPtr -=1; yyNonterminal = 120; {
-
- } break;
- case 158:
- case 99: /* PROGRAM2ATTR : "version" "=" digits PROGRAM2ATTR_1 PROGRAM2ATTR_2 .*/
- yyStateStackPtr -=5; yyAttrStackPtr -=5; yyNonterminal = 121; {
-
- } break;
- case 159: /* PROGRAM2ATTR_2 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 123; {
-
- } break;
- case 160:
- case 87: /* PROGRAM2ATTR_2 : "revision" "=" digits .*/
- yyStateStackPtr -=3; yyAttrStackPtr -=3; yyNonterminal = 123; {
- /* line 412 "t:lalr.tmp" */
- /* line 385 "PhoneLogParser.lalr" */
-
- Marker.ProgramRevision = (unsigned short)yyAttrStackPtr [3-1].Scan.number;
- #ifdef DEBUG
- printf(" PROGRAM revision: %d\n",yyAttrStackPtr [3-1].Scan.number);
- #endif
-
- } break;
- case 161: /* PROGRAM2ATTR_1 : .*/
- yyStateStackPtr -=0; yyAttrStackPtr -=0; yyNonterminal = 122; {
- /* line 421 "t:lalr.tmp" */
- /* line 377 "PhoneLogParser.lalr" */
-
- Marker.ProgramVersion = (unsigned short)yyAttrStackPtr [0-1].Scan.number;
- #ifdef DEBUG
- printf(" PROGRAM version : %d\n",yyAttrStackPtr [0-1].Scan.number);
- #endif
-
- } break;
- case 162:
- case 89: /* MARKNAME : "<MARKNAME>" text "</MARKNAME>" .*/
- yyStateStackPtr -=3; yyAttrStackPtr -=3; yyNonterminal = 119; {
- /* line 440 "t:lalr.tmp" */
- /* line 404 "PhoneLogParser.lalr" */
-
- StGetString(yyAttrStackPtr [2-1].Scan.lexstring,Word);
- if (strlen(Word) < 256)
- {
- strcpy(Marker.MarkName,Word);
- }
- else
- {
- strncpy(Marker.MarkName,Word,255);
- Marker.MarkName[255] = '\0';
- }
- #ifdef DEBUG
- printf(" MARKNAME : %s\n",Word);
- #endif
-
- } break;
- }
- /* SPEC State = Next(Top(),Nonterminal); nonterminal transition */
- yyState = *(yyNBasePtr[*yyStateStackPtr++] + yyNonterminal);
- *yyAttrStackPtr++ = yySynAttribute; /* ??? */
- if (yyState < yyFirstFinalState)
- goto ParseLoop; /* read nonterminal reduce ? */
- }
- }
- else
- {/* read */
- yyStateStackPtr++;
- yyGetAttribute(yyAttrStackPtr++,PhoneLogScanner_Attribute);
- yyTerminal = PhoneLogScanner_GetToken();
- yyIsRepairing = false;
- }
- }
- }
-
-
- static void yyErrorRecovery(yySymbolRange *yyTerminal, yyStateRange *yyStateStack, unsigned long yyStackSize, short yyStackPtr)
- {
- bool yyTokensSkipped;
- tSet yyContinueSet;
- tSet yyRestartSet;
- int yyLength = 0;
- char yyContinueString[256];
-
- /* 1. report an error */
- ErrorMessage(xxSyntaxError,xxError,PhoneLogScanner_Attribute.Position);
- /* 2. report the set of expected terminal symbols */
- MakeSet(&yyContinueSet,(short)yyLastTerminal);
- yyComputeContinuation(yyStateStack,yyStackSize,yyStackPtr,&yyContinueSet);
- yyContinueString[0] = '\0';
- while (!IsEmpty(&yyContinueSet))
- {
- char *yyTokenString = PhoneLogParser_TokenName[Extract(&yyContinueSet)];
- if ((yyLength += strlen(yyTokenString)+1) >= 256)
- break;
- strcat(yyContinueString,yyTokenString);
- strcat(yyContinueString," ");
- }
- ErrorMessageI(xxExpectedTokens,xxInformation,PhoneLogScanner_Attribute.Position,xxString,yyContinueString);
- ReleaseSet(&yyContinueSet);
- /* 3. compute the set of terminal symbols for restart of the parse */
- MakeSet(&yyRestartSet,(short)yyLastTerminal);
- yyComputeRestartPoints(yyStateStack,yyStackSize,yyStackPtr,&yyRestartSet);
- /* 4. skip terminal symbols until a restart point is reached */
- yyTokensSkipped = false;
- while (!IsElement(*yyTerminal,&yyRestartSet))
- {
- *yyTerminal = PhoneLogScanner_GetToken();
- yyTokensSkipped = true;
- }
- ReleaseSet(&yyRestartSet);
- /* 5. report the restart point */
- if (yyTokensSkipped)
- {
- ErrorMessage(xxRestartPoint,xxInformation,PhoneLogScanner_Attribute.Position);
- }
- }
-
-
- /* compute the set of terminal symbols that can be accepted (read)
- in a given stack configuration (eventually after reduce actions) */
-
- static void yyComputeContinuation(yyStateRange *yyStack, unsigned long yyStackSize, short yyStackPtr, tSet *yyContinueSet)
- {
- register yySymbolRange yyTerminal;
- register yyStateRange yyState = yyStack[yyStackPtr];
-
- AssignEmpty(yyContinueSet);
- for (yyTerminal = yyFirstTerminal;yyTerminal <= yyLastTerminal;yyTerminal++)
- {
- if (yyNext(yyState,yyTerminal) != yyNoState && yyIsContinuation(yyTerminal,yyStack,yyStackSize,yyStackPtr))
- Include(yyContinueSet,(short)yyTerminal);
- }
- }
-
-
- /* check whether a given terminal symbol can be accepted (read)
- in a certain stack configuration (eventually after reduce actions) */
-
- static bool yyIsContinuation(yySymbolRange yyTerminal, yyStateRange *yyStateStack, unsigned long yyStackSize, short yyStackPtr)
- {
- register yyStateRange yState;
- register yySymbolRange yyNonterminal;
- yyStateRange *yyStack;
-
- MakeArray ((char **)&yyStack,&yyStackSize,sizeof(yyStateRange)); /* pass Stack by value */
- #ifdef BCOPY
- bcopy((char *)yyStateStack,(char *)yyStack,(int)sizeof(yyStateRange) * (yyStackPtr+1));
- #else
- memcpy((char *)yyStack,(char *)yyStateStack,(int)sizeof(yyStateRange) * (yyStackPtr+1));
- #endif
- yState = yyStack[yyStackPtr];
- for (;;)
- {
- yyStack[yyStackPtr] = yState;
- yState = yyNext(yState, yyTerminal);
- if (yState == yyNoState)
- {
- ReleaseArray((char **)&yyStack,&yyStackSize,sizeof(yyStateRange));
- return false;
- }
- if (yState <= yyLastReadTermState)
- {/* read or read terminal reduce ? */
- ReleaseArray((char **)&yyStack,&yyStackSize,sizeof(yyStateRange));
- return true;
- }
- for (;;)
- {/* reduce */
- if (yState == yyStopState)
- {
- ReleaseArray((char **)&yyStack,&yyStackSize,sizeof(yyStateRange));
- return true;
- }
- else
- {
- yyStackPtr -= yyLength[yState - yyFirstReduceState];
- yyNonterminal = yyLeftHandSide[yState - yyFirstReduceState];
- }
- yState = yyNext(yyStack[yyStackPtr],yyNonterminal);
- if (yyStackPtr >= yyStackSize)
- {
- ExtendArray((char **)&yyStack,&yyStackSize,sizeof(yyStateRange));
- }
- yyStackPtr++;
- if (yState < yyFirstFinalState)
- break; /* read nonterminal ? */
- yState = yyFinalToProd[yState - yyFirstReadTermState]; /* read nonterminal reduce */
- }
- }
- }
-
-
- /* compute a set of terminal symbols that can be used to restart
- parsing in a given stack configuration. we simulate parsing until
- end of file using a suffix program synthesized by the function
- Continuation. All symbols acceptable in the states reached during
- the simulation can be used to restart parsing. */
-
- static void yyComputeRestartPoints(yyStateRange *yyStateStack, unsigned long yyStackSize, short yyStackPtr, tSet *yyRestartSet)
- {
- register yyStateRange yState;
- register yySymbolRange yyNonterminal;
- yyStateRange *yyStack;
- tSet yyContinueSet;
-
- MakeArray ((char **)&yyStack,&yyStackSize,sizeof(yyStateRange)); /* pass Stack by value */
- #ifdef BCOPY
- bcopy((char *)yyStateStack,(char *)yyStack,(int)sizeof(yyStateRange) * (yyStackPtr+1));
- #else
- memcpy((char *)yyStack,(char *)yyStateStack,(int)sizeof(yyStateRange) * (yyStackPtr+1));
- #endif
- MakeSet(&yyContinueSet,(short)yyLastTerminal);
- AssignEmpty(yyRestartSet);
- yState = yyStack[yyStackPtr];
- for (;;)
- {
- if (yyStackPtr >= yyStackSize)
- ExtendArray((char **)&yyStack,&yyStackSize,sizeof(yyStateRange));
- yyStack[yyStackPtr] = yState;
- yyComputeContinuation(yyStack,yyStackSize,yyStackPtr,&yyContinueSet);
- Union(yyRestartSet,&yyContinueSet);
- yState = yyNext(yState,yyContinuation[yState]);
- if (yState >= yyFirstFinalState)
- {/* final state ? */
- if (yState <= yyLastReadTermState)
- {/* read terminal reduce ? */
- yyStackPtr++;
- yState = yyFinalToProd[yState - yyFirstReadTermState];
- }
- for (;;)
- {/* reduce */
- if (yState == yyStopState)
- {
- ReleaseSet(&yyContinueSet);
- ReleaseArray((char **)&yyStack,&yyStackSize,sizeof(yyStateRange));
- return;
- }
- else
- {
- yyStackPtr -= yyLength[yState - yyFirstReduceState];
- yyNonterminal = yyLeftHandSide[yState - yyFirstReduceState];
- }
- yState = yyNext(yyStack[yyStackPtr],yyNonterminal);
- yyStackPtr++;
- if (yState < yyFirstFinalState)
- break; /* read nonterminal ? */
- yState = yyFinalToProd[yState - yyFirstReadTermState]; /* read nonterminal reduce */
- }
- }
- else
- {/* read */
- yyStackPtr++;
- }
- }
- }
-
-
- /* access the parse table: Next : State x Symbol -> Action */
-
- static yyStateRange yyNext(yyStateRange yyState,yySymbolRange yySymbol)
- {
- register yyTCombType *yyTCombPtr;
-
- if (yySymbol <= yyLastTerminal)
- {
- for (;;)
- {
- yyTCombPtr = yyTBasePtr[yyState] + yySymbol;
- if (yyTCombPtr->Check != yyState)
- {
- if ((yyState = yyDefault[yyState]) == yyNoState)
- return yyNoState;
- }
- else
- return yyTCombPtr->Next;
- }
- }
- else
- return *(yyNBasePtr[yyState] + yySymbol);
- }
-
-
- static void BeginPhoneLogParser(void)
- {
- /* line 31 "t:lalr.tmp" */
- /* line 30 "PhoneLogParser.lalr" */
- /* BEGIN */
- /* BEGIN */
- }
-
-
- void ClosePhoneLogParser(void)
- {
-
- }
-